package cn.itrip.common;

import lombok.Data;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @Author:小伟
 * @Description:
 * @Date:2020-03-07 22:18
 **/
@Data
public class Page<T> {
    /**
     * 实体类列表
     */
    private List<T> rows;
    /**
     * 是否首
     */
    private boolean first;
    /**
     * 是否尾页
     */
    private boolean last;
    /**
     * 每页显示条数
     */
    private Integer pageSize;
    /**
     * 当前页面信息数量
     */
    private Integer pageNoSize;
    /**
     * 总页数
     */
    private Integer pageCount;
    /**
     * 当前页
     */
    private Integer pageNo;
    /**
     * 总信息数
     */
    private Integer totalRow;
    /**
     * 起始位置
     */
    private Integer beginPos;

    /**
     * @param page 当前页数
     * @param size 每页多少条数据
     * @param list 数据集合
     */
    public void pageUtil(Integer page, Integer size, List<T> list) {
        List<T> list1 = list.stream().skip((page - 1) * size).limit(size).collect(Collectors.toList());
        int length = list.size();
        //是否第一页
        this.first = (page == 0);
        this.beginPos = page;
        //是否最后一页
        this.last = (page == (length - 1) / size);
        //总页数
        this.pageCount = ((length - 1) / size + 1);
        //总elements
        this.totalRow = (length);
        //每页多少elements
        this.pageNoSize = (size);
        //内容
        this.rows = (list1);
        //当前页elements
        this.pageSize = (list1.size());
        //当前页数，第一页是0
        this.pageNo = (page);
    }
}
